﻿// SDOI 2009, E&D.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

/*

http://oj.daimayuan.top/course/30/problem/1240

小 E 与小 W 进行一项名为 E&D 游戏。

游戏的规则如下：桌子上有 2n
 堆石子，编号为 1∼2n
。其中，为了方便起见，我们将第 2k−1
 堆与第 2k
 堆（1≤k≤n
）视为同一组。第 i
 堆的石子个数用一个正整数 Si
 表示。

一次分割操作指的是，从桌子上任取一堆石子，将其移走。然后分割它同一组的另一堆石子，从中取出若干个石子放在被移走的位置，组成新的一堆。操作完成后，所有堆的石子数必须保证大于 0
。显然，被分割的一堆的石子数至少要为 2
。两个人轮流进行分割操作。如果轮到某人进行操作时，所有堆的石子数均为 1
，则此时没有石子可以操作，判此人输掉比赛。

小 E 进行第一次分割。他想知道，是否存在某种策略使得他一定能战胜小 W。因此，他求助于小 F，也就是你，请你告诉他是否存在必胜策略。例如，假设初始时桌子上有 4
 堆石子，数量分别为 1,2,3,1
。小 E 可以选择移走第 1
 堆，然后将第 2
 堆分割（只能分出 1
 个石子）。接下来，小 W 只能选择移走第 4
 堆，然后将第 3
 堆分割为 1
 和 2
。最后轮到小 E，他只能移走后两堆中数量为 1
 的一堆，将另一堆分割为 1
 和 1
。这样，轮到小 W 时，所有堆的数量均为 1
，则他输掉了比赛。故小 E 存在必胜策略。

输入格式
本题有多组数据。第一行一个整数 T
，表示数据组数。

对于每组数据，第一行一个整数 N
，表示桌子上共有 N
 堆石子，这里的 N
 即为题目描述中的 2n
。第二行 N
 个整数 S1,S2,…SN
。

保证 1≤T≤20
，1≤N≤2×104
 且 N
 为偶数，1≤Si≤2×109
。

输出格式
对于每组数据，如果小 E 必胜，则一行一个字符串 YES，否则一行一个字符串 NO。

样例输入1
2
4
1 2 3 1
6
1 1 1 1 1 1
样例输出1
YES
NO

*/

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <set>

using namespace std;

typedef long long ll;


const int N = 1010;
int n, m, sg[N][N];

int calc(int i, int j) {
    if (sg[i][j] != -1) return sg[i][j];
    sg[i][j] = 0;
    set<int> s;
    for (int k = 1; k < i; k++)
        s.insert(calc(k, i - k));
    for (int k = 1; k < j; k++)
        s.insert(calc(k, j - k));
    while (s.count(sg[i][j])) sg[i][j]++;
    return sg[i][j];
}

int calc2(int i, int j, int d) {
    if (d == -1) return 0;
    if ((i & (1 << d)) || (j & (1 << d))) {
        int ans = calc2(i & ((1 << d) - 1), j & ((1 << d) - 1), d - 1);
        if (ans == d) ans++;
    }

    return calc2(i, j, d - 1);
}

int __builtin_ctz(int x) {
    if (x == 0) return 1;
    int ret = 0;
    while (x) {
        if (x & 1) { return ret; }
        else { ret++; }
        x >>= 1;
    }

    return ret;
}

int main()
{
    int tc;
    scanf("%d",&tc);
    for (int T = 0; T < tc; T++) {
        scanf("%d",&n);
        int ans = 0;
        for (int i = 0; i < n; i += 2) {
            int x, y;
            scanf("%d%d",&x,&y);
            ans ^= __builtin_ctz(((x - 1) | (y - 1)) + 1);
        }
        puts(ans ? "YES" : "NO");
    }
}

 